草庐IT

trace32 while

全部标签

c - 如何区分16位MZ和32位MZ

我需要区分32位PE和16位DOSMZ。正确的做法是什么?我可以使用启发式方法,例如查找PEheader,但我觉得它不一定是确定性的 最佳答案 所有DOS风格的可执行文件都有一个“MZ”作为前两个字节。要识别MSDOS可执行文件与众多其他变体,最好的办法似乎是读取文件中偏移量0x0018处重定位表的位置,如果它大于0x0040(进入文件),则它不仅仅是普通的DOS.为了明确地将可执行文件标识为“PE”可执行文件,在文件中的偏移量0x003C处有一个指针。这是文件中的偏移量,将包含字节“PE”和两个空值。其他MSDOS的“MZ”变体将

windows - Visual Studio 在 Windows 7 上将 WINVER/_WIN32_WINNT 设置为 Windows 8?

我正在使用VisualStudio2012在Windows7x64上执行一些测试。看起来Microsoft的工具链正在将_WIN32_WINNT设置为0x602(_WIN32_WINNT_WIN8).运行我们的测试程序导致TheprocedureentrypointGetOverlappedResultExcouldnotbelocatedinthedynamiclinklibraryKERNEL32.dll:我有两个问题。首先,出于病态的好奇,为什么Microsoft将_WIN32_WINNT设置为对执行环境无效的值?我能理解用户是否想要这样做,但微软不行,因为它会破坏一切(q.v.

c++ - 将 win32 代码 (windows.h) 移植到 linux

很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭10年前。我正在开发一个C++项目,其中有一堆VisualStudio生成的项目文件,我想将它们移植到Linux。我本质上是在Windows上的多个文件中使用windows.h头文件。现在,我不确定,因为明确不存在linux.h文件(如果存在,请指导我在哪里查看)。在linux上,我使用EclipseCDT进行开发。关于它在Linux上如何工作,我有两个想法,但我希望您的输入知道正确的方向是什么:(1)删

c++ - 如何禁用 win32 'interface' 宏?

我在这里绝对疯了。我正在Windows上进行一些C++开发,我有一个名为“interface”的命名空间:namespacegd{namespaceinterface{}}//endnamespace但是,无论我包含“Windows.h”还是“Wtypes.h”,都会包含一个名为“objbase.h”的文件,其中包含一个名为“interface”的宏。该宏不允许我使用命名空间名称。Win32API中是否有禁用接口(interface)宏定义的功能?如果没有,有人可以想出一个聪明的解决方法来禁用它,而不需要对我的代码库进行太多大规模更改吗? 最佳答案

c - 使用 gcc 编译 win32 项目时如何链接到库?

我正在尝试在Win7上使用gcc编译一个基本的hellowordwinform应用程序。代码是这样的:/*WINHELLO.C"Hello,world!",Win32style.*/#includeLRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);/*WinMain(),ourentrypoint*/intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPSTRszCmdLine,intiCmdShow){staticcharszAppName[]="winhello";HW

windows - 为什么我不能终止这个 while 循环?

我编写了以下脚本:print"WillacceptinputuntilEOF";while(defined($line=)){print"Inputwas$line\n";if(chomp(@line)eq"end"){print"aha\n";last;}}我有两个问题:为什么当我在控制台中键入end时,我看不到循环中的aha和break(last等于break对吧)?停止while循环的EOF组合键是什么?我以为它是Windows中的ctrl+D但它不起作用。 最佳答案 你的脚本没有使用usestrict;使用警告;。否则,您会

时间:: do while loop not working as supossed

这个程序应该适用于这两种情况,至少我认为,但对于某些值,它并没有按预期工作。staticvoidMain(string[]args){doublenum,temp=0;doublefrac;intj=1;num=1034.264;do{j=j*10;Console.WriteLine(j);temp=num*j;Console.WriteLine(temp);}while((temp%10)!=0);}对于值1034.347,它工作正常--workingfor1034.347但是对于值1034.235notworking1034.235它将变得无限 最佳答案

c++ - 什么是 Win32 消息编码?

如果我阅读PostMessage的描述API,它有这样一句话:Thesystemonlydoesmarshallingforsystemmessages(thoseintherange0to(WM_USER-1)).Tosendothermessages(those>=WM_USER)toanotherprocess,youmustdocustommarshalling.我很好奇“消息编码”是什么? 最佳答案 消息有时会在其参数中传递指向内存缓冲区的指针。如果您按原样从一个进程向另一个进程发送内存地址,则该地址在接收进程中将具有不同

c++ - 使用C++编程时,我应该如何在win32中创建一个子窗口?

我是C++以及Windows编程的新手..我已经使用msdnCreateWindow()函数创建了一个窗口它工作正常..现在我想创建一个子窗口...父窗口应该控制子窗口...关于此的任何帮助示例代码。提前致谢 最佳答案 粗略地说,在父级的处理程序中,您希望在其中创建子级,调用CreateWindow,将父级的窗口作为hwndParent传递-可能,您还想为子项设置某些样式,例如WS_CHILD。然后,您与子窗口的交互取决于您创建的窗口的类型。某些窗口(例如按钮)被设计为用作子窗口,因此它们会发送大量通知消息,因此您可以设置父窗口来监

windows - 支持目前在 32 位操作系统中工作的 64 位操作系统

我有一个包含许多服务和一个UI模块的应用程序。这些都是用VC++6.0开发的。总KLOC为560KLOC。它使用多线程、MFC和所有数据类型,如word、int、long。现在我们需要支持64位操作系统。我们需要对产品进行哪些更改。我所说的支持是指既喜欢在64位操作系统上运行应用程序,又喜欢使用64位内存。编辑:由于时间限制,我排除了迁移到VS2005或任何高于VC6.0的版本。那么需要做哪些改变。 最佳答案 64位Windows包括通过WOW的32位。任何32位应用程序都应该继续工作。(只有驱动程序有匹配操作系统的位数。)[评论者